package com.newly.common.core.service.operLogger.api;

import com.newly.common.base.entity.PageUtils;
import com.newly.common.base.entity.sys.operLogger.dto.OperLoggerDto;
import com.newly.common.base.entity.sys.operLogger.po.OperLoggerPo;
import org.aspectj.lang.ProceedingJoinPoint;

import java.util.List;

/**
 * @program: newly-parent
 * @remark: 操作日志业务接口
 * @author: guan
 * @create: 2021-12-04 18:07
 */
public interface IOperLoggerService {
    /**
     * 保存操作日志
     *
     * @param operLoggerDto 操作日志数据
     * @return 保存成功返回true
     */
    boolean save(OperLoggerDto operLoggerDto);

    /**
     * 保存操作日志
     *
     * @param proceedingJoinPoint 切面对象
     * @param status              操作日志状态
     * @return 保存成功返回true
     */
    boolean save(ProceedingJoinPoint proceedingJoinPoint, int status);

    /**
     * 修改操作日志
     *
     * @param operLoggerDto 操作日志数据
     * @return 修改成功返回true
     */
    boolean modify(OperLoggerDto operLoggerDto);


    /**
     * 查询操作日志列表
     *
     * @param offset      页码
     * @param limit       页数
     * @param abilityCode 操作（按钮的菜单能力）
     * @param fromTime    创建开始时间
     * @param toTime      创建结束时间
     * @param keyword     关键字
     * @return PageUtils OperLoggerPo.class
     */
    PageUtils list(Integer offset, Integer limit, Integer abilityCode,
                   String fromTime, String toTime, String keyword);

    /**
     * 通过id查询操作日志
     *
     * @param logIds 操作日志id
     * @return List OperationLoggerPo.class
     */
    List<OperLoggerPo> getByIds(List<String> logIds);

    /**
     * 通过id删除操作日志
     *
     * @param logIds 操作日志id
     * @return 删除成功返回true
     */
    boolean removeByIds(List<String> logIds);

    /**
     * 删除所有日志
     *
     * @return 删除成功返回true
     */
    boolean removeAll();

    /**
     * 清空日志
     *
     * @return 清空成功返回true
     */
    boolean clear();
}
